package day12.homework;

import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

//使用newFixedThreadPool处理批量任务
//题目描述：编写一个程序，使用newFixedThreadPool创建一个固定大小的线程池来处理一批任务。
//每个任务模拟一个耗时操作（例如，睡眠一段时间），并输出任务开始和结束的时间。要求：
//创建一个包含10个任务的列表，每个任务睡眠1-3秒之间的随机时间。
//使用固定大小为5的线程池来执行这些任务。
//输出每个任务的开始和结束时间，以及任务的总执行时间
public class SleepList {
    public static void main(String[] args) {
        ExecutorService es = Executors.newFixedThreadPool(5);
        Random r = new Random();
        long[] sleepTime = {1000,2000,3000};
        for (int i = 0; i < 10; i++) {
            int index = r.nextInt(3);
            es.execute(()->{
                String name = Thread.currentThread().getName();
                long start = System.currentTimeMillis();
                System.out.println(name+"开始执行休眠,休眠"+sleepTime[index]+"ms,开始时间："+start);
                try {
                    Thread.sleep(sleepTime[index]);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                long end = System.currentTimeMillis();
                System.out.println(name+"结束休眠,结束时间："+end);
            });
        }
        es.shutdown();
    }
}
